/**
 * 
 */
package com.hww.sort.impl;

import com.hww.sort.ISortNumber;

/**
 * 1)使用接口可以降低程序的耦合度，使程序具有更好的可擴展性，使用者只关心和使用
 *   接口定義的功能，而不用關心功能是如何實現的。
 * 2)在方法的具體實現中，盡量不要修改傳入參數的值，應clone一個跟參數一樣的對象
 * @author:Huangwenwei
 * @date:2014-6-18
 * @time:下午7:45:15
 */
public class SortTest {

	/**
	 * 打印數組
	 *@Time:下午7:48:01
	 *@Data:2014-6-18
	 *@Email:mr.huangwenwei@gmail.com
	 *@param array 待打印的數組
	 *@Return:void
	 */
	public static void printIntArray(int[] array) {
		if (array == null)
			return;
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + " ");
		}
		System.out.println();
	}

	/**
	 * @Time:下午7:45:15
	 * @Data:2014-6-18
	 * @Email:mr.huangwenwei@gmail.com
	 * @param args
	 * @Return:void
	 */
	public static void main(String[] args) {
		int[] array = new int[]{4,7,1,8,9,5,3};
		System.out.print("排序前的數組：");
		printIntArray(array);
		
		ISortNumber test = new SelectionSort();
		System.out.print("選擇排序結果：");
		printIntArray(test.sortASC(array));
		
		test = new BubbleSort();
		System.out.print("冒泡排序結果：");
		printIntArray(test.sortASC(array));

		test = new LinearInsertSort();
		System.out.print("綫性排序結果：");
		printIntArray(test.sortASC(array));
		
		test = new QuickSort();
		System.out.print("快速排序結果：");
		printIntArray(test.sortASC(array));
		
		
	}

}
